import axios from "axios";
import { Message } from 'element-ui'
import router from "@/router"
const instance = axios.create({
    baseURL: "http://xue.cnkdl.cn:23683",
    timeout: 10000
})


// 注意：执行顺序：请求拦截器=>响应拦截器=>组件中使用
// 会打印出 1111=>2222=>3333

// 请求拦截器
instance.interceptors.request.use(config => {
    const token = localStorage.getItem("edb-authorization-token")
    if (token && !config.url.endsWith("/login") && !config.url.endsWith("/captchaImage")) {
        config.headers["Authorization"] = "Bearer " + token
    }
    return config
}, err => {
    return Promise.reject(err)
});


// 响应拦截器
instance.interceptors.response.use(res => {
    // console.log(2222);
    let res_data = res.data
    // 将 if else语句进行封装，在组件中就可以省略
    if (res_data.code !== 200) {
        Message.error(res_data.msg || "网络开小差啦~")

        // 只要不是200，都会走这里
        if (res_data.code == 401) {
            localStorage.removeItem("edb-authorization-token")
            router.push("/login")
        }
        // 这里的return 不是为了结束函数，实际上是把return值传到组件中的res
        return false
    }
    return res_data

}, err => {
    return Promise.reject(err)
});

export default instance